有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用不同的变量类型进行计算

我现在正在阅读赫伯特·席尔德的《Java:Complete Reference》,有一件事我还不太清楚。在关于整数的章节中,它说当需要大的整数时,应该使用long类型。书中的代码示例:

// Compute distance light travels using long variables

class Light {
    public static void main(String args[]) {

        int lightspeed;
        long days;
        long seconds;
        long distance;

        // approximate speed of light in miles per second

        lightspeed = 18600;

        days = 1000; // specify number of days here

        seconds = days * 24 * 60 * 60; // convert to seconds

        distance = lightspeed * seconds; // compute distance

        System.out.print("In " + days + " days light will travel about " + distance + " miles.");

    }
}

执行时,控制台会向我提供这样的结果:

"In 1000 days light will travel about 16070400000000 miles."

根据我的逻辑,days和seconds变量也应该是int,而它们的值小于2147483647

在这个例子中,天=1000,秒=86400000,所以值没有那么大

但当我声明这样的变量时:

int lightspeed, days, seconds;
long distance;

我有一个奇怪的结果,现在我无论如何也不能接受

"In 1000 days light will travel about -1367621632 miles."

请帮帮我


共 (1) 个答案

  1. # 1 楼答案

    是的,正如埃兰所指出的,只有距离是相关的

    如果你只想到除数,这种行为很容易记住

    如上所述,a / b执行整数除法(截断),假设a和b是整数,而

    (double) a / b
    

    我会给你双份的

    请注意,演员阵容总是指其后的内容。因此,在一个只包含两个整数的表达式中,第一个整数被转换为double

    `